<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php学习笔记[054]</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="show"><span>054 Apache Rewrite 拟静态配置</span></div>
<?php include 'include/top.php';?>
<div class="text">
<b>mod_rewrite 简介和配置</b>
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址，基于Perl语言的正则表达式规范。平时帮助我们实现拟静态，拟目录，域名跳转，防止盗链等<br />
如一个普通访问地址为   <strong>*/php100.php?id=2</strong>可以转成： <strong>*/PHP100_2.html</strong>或转成： <strong>*/PHP100_2/</strong><br />
<b>Apache配置</b>
支持httpd.conf 配置和目录 .htaccess配置<br />
启用rewrite<br />
# LoadModule rewrite_module modules/mod_rewrite.so<br />
去除前面的 #<br />
LoadModule rewrite_module modules/mod_rewrite.so<br />
启用.htaccess<br />
AllowOverride None    修改为： AllowOverride All<br />
<b>mod_rewrite 规则的使用</b>
1.防盗链<br />
RewriteEngine on	//开启<br />
RewriteCond %{HTTP_HOST} !^www.php100.com  [NC] //判断如果不是该域名<br />
RewriteRule   ^/(.*) http://www.php100.com/ [L]//跳转到该地址<br />
2.伪静态<br />
RewriteEngine on<br />
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1//$1为正则中的第一个内存地址<br />
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]//跳转到<br />
<b>mod_rewrite 规则修正符</b>
<br />
  1) R 强制外部重定向<br />
  2) F 禁用URL,返回403HTTP状态码。<br />
  3) G 强制URL为GONE，返回410HTTP状态码。<br />
  4) P 强制使用代理转发。<br />
  5) L 表明当前规则是最后一条规则，停止分析以后规则的重写。<br />
  6) N 重新从第一条规则开始运行重写过程。<br />
  7) C 与下一条规则关联
如果规则匹配则正常处理，以下修正符无效
8) T=MIME-type(force MIME type) 强制MIME类型<br />
  9) NS  只用于不是内部子请求<br />
  10) NC 不区分大小写<br />
  11) QSA 追加请求字符串<br />
  12) NE 不在输出转义特殊字符   \%3d$1  等价于 =$1
</div>




</body>
</html>
